package com.briup.es.service;

import com.briup.es.domain.dto.AddOrderDto;
import com.briup.es.domain.vo.OrderDetailVO;
import com.briup.es.domain.vo.OrderVO;

import java.util.List;

public interface OrderService {

    /**
     * 根据订单编号或订单的状态查询当前登录用户下
     * 符合条件的所有订单详细
     *
     * @param id     订单id
     * @param status 订单状态
     * @return List<OrderVO> 所有符合条件的订单数据
     */
    List<OrderVO> queryAllByConditional(String id, Integer status);

    /**
     * 生成订单，向订单表中生成当前登录用户的订单数据，
     * 包括生成订单下的订单项数据
     *
     * @param orderDto 订单数据
     */
    void generatorOrder(AddOrderDto orderDto);

    /**
     * 根据订单id获取订单的详细信息
     *
     * @param orderId 订单id
     * @return OrderDetailVO 订单详细信息
     */
    OrderDetailVO getOrderDetail(String orderId);

    /**
     * 根据订单id关闭指定的订单，
     * 即修改订单的状态，同时修改图书的库存
     *
     * @param orderId 订单id
     */
    void closeOrder(String orderId);

    /**
     * 确认收货，
     * 即修改订单的状态
     *
     * @param orderId 订单id
     */
    void completeOrder(String orderId);
}
